package com.aoip.telemetry.telemetry.receive.session;

import io.netty.channel.Channel;

/**
 * 会话管理接口
 *
 * @author chenbai
 * @version 1.0
 * @date 2021/8/7 11:11
 */
public interface Session {
    /**
     * 绑定会话
     *
     * @param channel 哪个 channel 要绑定会话
     * @param stCode  会话绑定测站编码
     */
    void bind(Channel channel, String stCode);

    /**
     * 解绑会话
     *
     * @param channel 哪个 channel 要解绑会话
     */
    void unbind(Channel channel);

    /**
     * 获取属性
     *
     * @param channel 哪个 channel
     * @param key     属性keys
     * @return 属性值
     */
    Object getAttribute(Channel channel, String key);

    /**
     * 设置属性
     *
     * @param channel 哪个 channel
     * @param key     属性名
     * @param value   属性值
     */
    void setAttribute(Channel channel, String key, Object value);

    /**
     * 根据用户名获取 channel
     *
     * @param stCode 测站编码
     * @return channel
     */
    Channel getChannel(String stCode);
}
